Virtual reality allows people to interact with objects in a three dimensional virtual space. Currently, most virtual reality applications restrict the user to one encapsulated virtual environment, preventing the user from accessing other applications while the environment is running. For instance, if a user wants to play a virtual reality game, that game consumes the entire virtual environment to the exclusion of other applications. A user can not simultaneously perform one task in virtual reality and interact with another legacy application at the same time. This problem arises due to the fact that virtual reality applications do not have an easy way to multitask or interact with one another or legacy applications within a single virtual environment.
This is traditionally an area where virtual reality has lagged behind standard methods of computer interaction. In standard non-immersive two-dimensional computer-user interaction, a user can multitask with multiple applications and may do so with multiple displays. There are unique challenges which have prevented usable application multitasking and interaction from occurring within virtual reality, however.
In traditional event-driven computing, objects may be rendered and repainted at a certain frequency; this creates problems standardizing refresh rates of applications. Improper or inconsistent refresh rates can detract from the continuity of the experience and can lead to adverse physical effects for the user. Additionally, running multiple programs in the same virtual environment with a traditional event-driven architecture and communication leads to problems where the environment “hangs” while waiting for additional information from the sending program. This makes a traditional event-driven architecture and means of communication between applications unfeasible.
There are also unique security risks associated with attempting to multitask within a virtual environment. In a traditional immersive application such as a game, there is often security to protect the integrity of the game from outside breach, but not security between different aspects of the application itself. Objects within the application may freely interact with other objects, which is generally not a problem because all of the objects within the application are instantiated by the application itself. In a virtual environment which allows access to itself and by outside applications, the applications may “step on” one another while attempting to have the virtual environment render objects and perform actions.